// JWT认证中间件
const JwtUtils = require('./jwtUtils');

/**
 * JWT认证中间件
 * 用于验证用户是否已登录
 */
const authMiddleware = (req, res, next) => {
  // 从请求头获取令牌
  const token = req.headers.authorization?.split(' ')[1];

  if (!token) {
    return res.status(401).json({
      success: false,
      message: '未提供认证令牌'
    });
  }

  // 验证令牌
  const decoded = JwtUtils.verifyToken(token);
  
  if (!decoded) {
    return res.status(401).json({
      success: false,
      message: '无效的认证令牌'
    });
  }

  // 将用户信息存储到请求对象中
  req.user = decoded;
  next();
};

/**
 * 教师权限中间件
 * 用于验证用户是否为教师
 */
const teacherMiddleware = (req, res, next) => {
  if (req.user && req.user.role === 'teacher') {
    next();
  } else {
    res.status(403).json({
      success: false,
      message: '需要教师权限'
    });
  }
};

/**
 * 学生权限中间件
 * 用于验证用户是否为学生
 */
const studentMiddleware = (req, res, next) => {
  if (req.user && req.user.role === 'student') {
    next();
  } else {
    res.status(403).json({
      success: false,
      message: '需要学生权限'
    });
  }
};

module.exports = {
  authMiddleware,
  teacherMiddleware,
  studentMiddleware
};